package com.quxiu.system.domain.vo;

import com.alibaba.fastjson2.JSONObject;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.quxiu.system.domain.BpmPermission;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 流程实例对象 bpm_proc_inst
 *
 * @author quxiu
 * @date 2024-06-14
 */
@Data
public class BpmProcInstInfoVo implements Serializable {
    private static final long serialVersionUID = 1L;

    /** 流程实例id */
    private Long procInstId;

    /** 流程id */
    private Long procId;

    /** 流程名称 */
    private String procName;

    /** 流程版本id */
    private Long versionId;

    /** 发起人id */
    private Long ownerId;
    /** 发起人姓名 */
    private String ownerName;

    /** 部门id */
    private Long deptId;
    /** 部门名称 */
    private String deptName;

    /** 运行状态：0-未开始 1-进行中 2-已完成 */
    private String runStatus;

    /** 审批状态：0-草稿 1-审批中 2-挂起 3-撤消 4-通过 5-驳回 */
    private String approvalStatus;

    /** 提交时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    private Date submitTime;

    /** 完成时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    private Date finishTime;

    /** 流程节点 */
    private String nodeConfig;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm")
    private Date createTime;

    /** 当前登录是否需要处理 */
    private Boolean needApproval;

    /** 需要处理的节点类型 */
    private String handleNodeType;

    /** 需要处理的审批记录id */
    private Long handleRecordId;

    /** 处理人id */
    private Long handlerId;
    /** 处理人姓名 */
    private String handlerName;

    /** 是否为管理员 */
    private Boolean admin;

    /** 是否为发起人 */
    private Boolean owner;

    /** 表单配置 */
    private JSONObject formConfig;
    /** 表单数据 */
    private JSONObject formData;

    /** 数据权限 */
    private Map<String, BpmPermission> permissions;


    /** 允许加签：0-禁用 1-启用 */
    private Integer allowAddSign;

    /** 允许转交：0-禁用 1-启用 */
    private Integer allowForward;

    /** 允许回退：0-禁用 1-启用 */
    private Integer allowRollback;

    /** 允许自动去重：0-禁用 1-启用（审批流程中审批人重复出现时，只需审批一次其余自动通过，仅依次审批类型生效） */
    private Integer allowAutoApprove;

    /** 允许撤消：0-禁用 1-启用 */
    private Integer allowRevoke;

    /** 允许审批意见为空：0-禁用 1-启用 */
    private Integer allowOpinionEmpty;

}
